package com.kfzx.www.emptyviewdemo;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class ViewTypeStringAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context mContext;
    private List<String> mStringList;
    private static final int EMPTY_VIEW = 1;


    class DataViewHolder extends RecyclerView.ViewHolder {
        TextView mTextView;

        public DataViewHolder(@NonNull View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.text);
        }
    }

    class EmptyViewHolder extends RecyclerView.ViewHolder {

        public EmptyViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }

    public ViewTypeStringAdapter(Context context, List<String> stringList) {
        mContext = context;
        mStringList = stringList;
    }


    /****
     * 根据ViewType来显示
     * 如果是EMPTY_VIEW，就是显示一张空白的图，
     * 如果不是就显示默认的数据视图
     * @param viewGroup
     * @param i
     * @return
     */
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (i == EMPTY_VIEW) {
            View emptyView = LayoutInflater.from(mContext).inflate(R.layout.empty_view_layout, viewGroup, false);
            return new EmptyViewHolder(emptyView);
        } else {
            View dataView = LayoutInflater.from(mContext).inflate(R.layout.string_layout, viewGroup, false);
            return new DataViewHolder(dataView);
        }
    }

    /****
     * 绑定数据也是分开绑定
     * @param viewHolder
     * @param i
     */
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        if (viewHolder instanceof DataViewHolder) {
            String string = mStringList.get(i);
            ((DataViewHolder) viewHolder).mTextView.setText(string);
        }
    }


    /***
     * 重点关注这个地方，当有数据的时候如实返回对应的数据总数，当没有数据的时候不能返回0，返回一个1才能有效，
     * 因为空白的视图也算是一个数据，用来显示emptyview
     * @return
     */
    @Override
    public int getItemCount() {
        return mStringList.size() > 0 ? mStringList.size() : 1;
    }

    /****
     * 重写itemviewType 当数据为 0 的时候告诉adapter显示空白的图，否则默认返回0 ，显示有数据的
     * @param position
     * @return
     */
    @Override
    public int getItemViewType(int position) {
        if (mStringList.size() == 0) {
            return EMPTY_VIEW;
        } else {
            return super.getItemViewType(position);
        }
    }
}
